package cn.supermaster.management.web.service.system;

import cn.supermaster.management.common.domain.SystemDictionaryData;
import cn.supermaster.management.common.domain.SystemDictionaryType;
import cn.supermaster.management.common.entity.Ztree;
import cn.supermaster.management.common.page.TableDataInfo;
import cn.supermaster.management.common.response.WebResponse;
import org.springframework.ui.ModelMap;

import java.util.List;

/**
 * All rights Reserved, Designed By www.super-bytecode.com
 *
 * @ProjectName: supermaster-management
 * @Package: cn.supermaster.management.web.service.system
 * @ClassName: ISDictionaryService
 * @Description: []
 * <p> </p>
 * @Author: [Lance Ting]
 * @Date: 2021/2/20 11:08
 * @Version: V1.0
 * @Copyright: 2021 www.super-bytecode.com Inc. All rights reserved.
 * TODO: 注意,本文件Lance Ting所作,如果转载或使用请标明具体出处!
 **/
public interface ISDictionaryService {

    /*
     * ================================================
     *  页面跳转功能实现
     * ================================================
     */

    /**
     * @Description: [dictionary_type-跳转到字典类型View界面]
     * <p></P>
     * @Title: skipDictionaryTypeIndexHtml
     * @Author: Lance Ting
     * @Date: 2021-02-20
     * @Return: java.lang.String
     */
    String skipDictionaryTypeIndexHtml();

    /**
     * @Description: [dictionary_type-跳转到字典类型Add界面]
     * <p></P>
     * @Title: skipDictionaryTypeAddHtml
     * @Author: Lance Ting
     * @Date: 2021-02-20
     * @Param:
     * @Return: java.lang.String
     * @Throws:
     */
    String skipDictionaryTypeAddHtml();

    /**
     * @Description: [dictionary_type-跳转到字典类型Modify界面]
     * <p></P>
     * @Title: skipDictionaryTypeModifyHtml
     * @Author: Lance Ting
     * @Date: 2021-02-20
     * @Param: modelMap
     * @Param: dictId
     * @Return: java.lang.String
     */
    String skipDictionaryTypeModifyHtml(ModelMap modelMap, Long dictId);

    /**
     * @Description: [dictionary_type-跳转到字典类型Detail界面]
     * <p></P>
     * @Title: skipDictionaryTypeDetailHtml
     * @Author: Lance Ting
     * @Date: 2021-02-20
     * @Param: modelMap
     * @Param: dictId
     * @Return: java.lang.String
     */
    String skipDictionaryTypeDetailHtml(ModelMap modelMap, Long dictId);

    /**
     * @Description: [dictionary_type-跳转到字典类型结构Tree界面]
     * <p></P>
     * @Title: skipDictionaryTreeHtml
     * @Author: Lance Ting
     * @Date: 2021-02-20
     * @Param: modelMap
     * @Param: columnId
     * @Param: dictType
     * @Return: java.lang.String
     */
    String skipDictionaryTreeHtml(ModelMap modelMap, Long columnId, String dictType);

    /**
     * @Description: [dictionary_data-跳转到字典类型View界面]
     * <p></P>
     * @Title: skipDictionaryDataIndexHtml
     * @Author: Lance Ting
     * @Date: 2021-02-20
     * @Param:
     * @Return: java.lang.String
     * @Throws:
     */
    String skipDictionaryDataIndexHtml();

    /**
     * /**
     *
     * @Description: [dictionary_data-跳转到字典类型Add界面]
     * <p></P>
     * @Title: skipDictionaryDataAddHtml
     * @Author: Lance Ting
     * @Date: 2021-02-20
     * @Param: modelMap
     * @Param: dictType
     * @Return: java.lang.String
     */
    String skipDictionaryDataAddHtml(ModelMap modelMap, String dictType);

    /**
     * @Description: [dictionary_data-跳转到字典类型Modify界面]
     * <p></P>
     * @Title: skipDictionaryDataModifyHtml
     * @Author: Lance Ting
     * @Date: 2021-02-20
     * @Param: modelMap
     * @Param: dictCode
     * @Return: java.lang.String
     */
    String skipDictionaryDataModifyHtml(ModelMap modelMap, Long dictCode);

    /*
     * ================================================
     *  Rest功能实现
     * ================================================
     */

    /**
     * @Description: [dictionary_type-根据条件获取字典类型列表]
     * <p></P>
     * @Title: queryDictionaryTypeList
     * @Author: Lance Ting
     * @Date: 2021-02-20
     * @Param: dictType
     * @Return: cn.supermaster.management.common.page.TableDataInfo
     */
    TableDataInfo queryDictionaryTypeList(SystemDictionaryType dictType);

    /**
     * @Description: [dictionary_type-到处字典类型列表]
     * <p></P>
     * @Title: doExportDictionaryTypes
     * @Author: Lance Ting
     * @Date: 2021-02-20
     * @Param: dictType
     * @Return: cn.supermaster.management.common.response.WebResult
     */
    WebResponse doExportDictionaryTypes(SystemDictionaryType dictType);

    /**
     * @Description: [dictionary_type-新增字典类型记录]
     * <p></P>
     * @Title: addDictionaryType
     * @Author: Lance Ting
     * @Date: 2021-02-20
     * @Param: dictType
     * @Return: cn.supermaster.management.common.response.WebResult
     */
    WebResponse addDictionaryType(SystemDictionaryType dictType);

    /**
     * @Description: [dictionary_type-修改字典类型记录]
     * <p></P>
     * @Title: modifyDictionaryType
     * @Author: Lance Ting
     * @Date: 2021-02-20
     * @Param: dict
     * @Return: cn.supermaster.management.common.response.WebResult
     */
    WebResponse modifyDictionaryType(SystemDictionaryType dict);

    /**
     * @Description: [dictionary_type-删除字典类型记录]
     * <p></P>
     * @Title: deleteDictionaryType
     * @Author: Lance Ting
     * @Date: 2021-02-20
     * @Param: ids
     * @Return: cn.supermaster.management.common.response.WebResult
     */
    WebResponse deleteDictionaryType(String ids);

    /**
     * @Description: [dictionary_type-清除字典数据缓存]
     * <p></P>
     * @Title: cleanDictionaryCache
     * @Author: Lance Ting
     * @Date: 2021-02-20
     * @Return: cn.supermaster.management.common.response.WebResult
     */
    WebResponse cleanDictionaryCache();

    /**
     * @Description: [dictionary_type-校验字典类型唯一性]
     * <p></P>
     * @Title: doCheckDictionaryTypeUnique
     * @Author: Lance Ting
     * @Date: 2021-02-20
     * @Param: dictType
     * @Return: java.lang.String
     * @Throws:
     */
    String doCheckDictionaryTypeUnique(SystemDictionaryType dictType);

    /**
     * @Description: [dictionary_type-加载字典列表树]
     * <p></P>
     * @Title: loadDictionaryTree
     * @Author: Lance Ting
     * @Date: 2021-02-20
     * @Return: java.util.List<cn.supermaster.management.common.entity.Ztree>
     */
    List<Ztree> loadDictionaryTree();

    /////////////////////////////////////////////////////////

    /**
     * @Description: [dictionary_data-获取字典数据列表]
     * <p></P>
     * @Title: queryDictionaryDataList
     * @Author: Lance Ting
     * @Date: 2021-02-20
     * @Param: dictData
     * @Return: cn.supermaster.management.common.page.TableDataInfo
     */
    TableDataInfo queryDictionaryDataList(SystemDictionaryData dictData);

    /**
     * @Description: [dictionary_data-导出字典数据列表]
     * <p></P>
     * @Title: doExportDictionaryDatas
     * @Author: Lance Ting
     * @Date: 2021-02-20
     * @Param: dictData
     * @Return: cn.supermaster.management.common.response.WebResult
     */
    WebResponse doExportDictionaryDatas(SystemDictionaryData dictData);

    /**
     * @Description: [dictionary_data-新增字典数据记录]
     * <p></P>
     * @Title: addDictionaryData
     * @Author: Lance Ting
     * @Date: 2021-02-20
     * @Param: dictData
     * @Return: cn.supermaster.management.common.response.WebResult
     */
    WebResponse addDictionaryData(SystemDictionaryData dictData);

    /**
     * @Description: [dictionary_data-修改字典数据记录]
     * <p></P>
     * @Title: modifyDictionaryData
     * @Author: Lance Ting
     * @Date: 2021-02-20
     * @Param: dictData
     * @Return: cn.supermaster.management.common.response.WebResult
     */
    WebResponse modifyDictionaryData(SystemDictionaryData dictData);

    /**
     * @Description: [dictionary_data-删除字典数据记录]
     * <p></P>
     * @Title: deleteDictionaryDatas
     * @Author: Lance Ting
     * @Date: 2021-02-20
     * @Param: ids
     * @Return: cn.supermaster.management.common.response.WebResult
     */
    WebResponse deleteDictionaryDatas(String ids);

}

